-
Notifications
You must be signed in to change notification settings - Fork 11
feat: introduce webots demo package for rust robonix framework #16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
- Added a new webots demo package with various scripts for controlling a mobile robot. - Implemented demo service provider with semantic map and task planning services. - Updated demo recipe to reflect new package names and services. - Adjusted file permissions for several scripts to ensure proper execution. - Included necessary configuration files and documentation for the new package.
- Introduced a web-based management interface for robonix-core, allowing real-time monitoring and control. - Implemented a TF monitor to parse and visualize the ROS2 TF tree data. - Added logging functionality with a buffer to capture and display logs in the web GUI. - Updated the main application to initialize the web GUI and handle web server tasks. - Enhanced the existing Rust modules with new dependencies and improved structure for better maintainability.
- Renamed demo service from `demo_service` to `demo_service_provider` for clarity. - Updated `.env.example` to include new API keys for Qwen3-VL and DeepSeek services. - Added `.gitignore` to exclude unnecessary files and directories. - Enhanced `README.md` with detailed service descriptions and configuration instructions. - Improved `setup.py` to include additional dependencies for image processing and API interaction. - Refactored `semantic_map_service.py` to implement real object detection using Qwen3-VL and front camera integration. - Added test scripts for ping service and querying primitives to ensure functionality. - Cleaned up startup scripts for better readability and efficiency.
change to String fixes everything
Add preferred and alternative RUST_LOG configurations for robonix-core
- Introduced an Image Monitor module to track and store images from ROS2 topics. - Updated web GUI to display image topics and allow image retrieval. - Enhanced existing scripts and configurations for better integration with the new image monitoring feature. - Improved error handling and logging for image processing tasks. - Updated dependencies in Cargo.toml and Cargo.lock to support new functionalities.
- Commented out build commands in the test script for clarity. - Improved service call methods in DaemonRos2Clients to include retry logic and service discovery waiting. - Enhanced error messages for service call timeouts and failures to guide users in troubleshooting. - Updated QoS settings for service clients to ensure compatibility with robonix-core.
- Added bash completion support in the Docker entrypoint script. - Updated Dockerfile to include bash-completion and fonts-lmodern. - Enhanced Rust Makefile with new test commands for stress testing and benchmarking. - Introduced new test scripts for querying primitives and ping service load testing. - Updated README and .gitignore files to reflect new test framework structure and ignore unnecessary files. - Improved logging and error handling in test scripts for better diagnostics.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR introduces a comprehensive test framework and web GUI for the Robonix framework, along with modular reorganization of the codebase and integration of a Webots demo package for simulation.
Changes:
- Added a multi-language test framework (Rust, Python, C++) for stress testing ROS2 service performance
- Introduced a web-based GUI for monitoring and managing Robonix core components
- Reorganized codebase into modular directories (perception, cognition, action) with separate specification files
- Added Webots simulation demo package for RangerMiniV3 robot
Reviewed changes
Copilot reviewed 122 out of 158 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| rust/tools/test_framework/* | Stress test framework with benchmark reporting and visualization |
| rust/robonix-core/web_gui/* | Web GUI with static assets (HTML, CSS, JS) for system monitoring |
| rust/robonix-core/src/web_gui.rs | Web server implementation with REST API endpoints |
| rust/robonix-core/src/perception/* | Perception module with TF, topic, and image monitoring |
| rust/robonix-core/src/cognition/* | Cognition module with task planning specs |
| rust/robonix-core/src/action/* | Action module with skill library and motion specs |
| rust/provider/webots_demo_package/* | Webots simulation package for RangerMiniV3 robot |
| rust/robonix-core/src/main.rs | Updated main to initialize web GUI and monitoring components |
| rust/robonix-core/src/service/mod.rs | Changed metadata storage from JSON value to string |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| if metadata.get('requests'): parts.append(f"Reqs: {metadata['requests']}") | ||
| if metadata.get('rate'): parts.append(f"Rate: {metadata['rate']}Hz") | ||
| if metadata.get('duration'): parts.append(f"Dur: {metadata['duration']}s") |
Copilot
AI
Jan 12, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The metadata dictionary access could raise KeyError if the dictionary is malformed. Use .get() consistently with a default value or validate metadata structure before accessing.
| if metadata.get('requests'): parts.append(f"Reqs: {metadata['requests']}") | |
| if metadata.get('rate'): parts.append(f"Rate: {metadata['rate']}Hz") | |
| if metadata.get('duration'): parts.append(f"Dur: {metadata['duration']}s") | |
| requests = metadata.get('requests') | |
| if requests: | |
| parts.append(f"Reqs: {requests}") | |
| rate = metadata.get('rate') | |
| if rate: | |
| parts.append(f"Rate: {rate}Hz") | |
| duration = metadata.get('duration') | |
| if duration: | |
| parts.append(f"Dur: {duration}s") |
| let (r, g, b) = if encoding_lower == "bgr8" || encoding_lower == "8uc3" | ||
| { | ||
| (b, g, r) // Swap R and B for BGR | ||
| } else { | ||
| (r, g, b) | ||
| }; |
Copilot
AI
Jan 12, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment states '8uc3' is BGR format, but this encoding typically refers to 3-channel unsigned 8-bit format without specifying color order. Add documentation or a source reference explaining why 8uc3 is treated as BGR.
| skill_id: String::new(), | ||
| }; | ||
| } | ||
| if serde_json::from_str::<serde_json::Value>(&req.metadata).is_err() { |
Copilot
AI
Jan 12, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The error from JSON parsing is discarded. Consider logging the actual parse error for debugging purposes, similar to how it was done in the original code (lines 71-72 show the pattern).
- Commented out the build command in `start_robot.sh` and replaced it with a call to `./rbnx/build.sh`. - Updated logging levels in `four_wheel_steering_controller.cpp` from DEBUG to INFO for improved clarity in odometry and command updates. - Removed unused navigation and SLAM configuration files from the `setup.py` and deleted associated resource files. - Adjusted mappings in `robot_launch.py` for better command and odometry topic handling. - Enhanced `ros2_control.yml` parameters for the four-wheel steering controller to improve responsiveness and control limits. - Cleaned up RViz configuration in `default.rviz` for better visualization management.
- Updated `start_robot.sh` to accept parameters for world, RViz, navigation, and RTAB-Map settings. - Added new dependencies for RTAB-Map and navigation in `build.sh` and `package.xml`. - Introduced a new `camera_info_publisher.py` to publish camera info for RGB and depth cameras. - Modified `robot_launch.py` to integrate RTAB-Map nodes and camera info publisher. - Removed obsolete `test_launch.py` and `tiago_bringup_webots.urdf` files to streamline the project structure. - Adjusted RViz configuration for improved visualization and usability.
- Introduced `.gitignore` to exclude build artifacts. - Added `build.sh` and `run.sh` scripts for building and launching the ROS2 package. - Created `description.yml` for package metadata. - Implemented `rviz.config.rviz` for RViz visualization settings. - Added `start_rviz.sh` to launch RViz with the specified configuration. - Included initial files for `eaios_webots` package, including URDF, launch files, and configuration for navigation and control. - Established basic structure for `nav2_webots_tiago` with configuration files for navigation and mapping.
…ities - Added `tiago_demo_package` providing camera, depth, pose, and navigation primitives. - Introduced `navigation_skills_provider` package with wandering and move_to_object skills. - Updated `demo_recipe.yaml` to register new packages and their respective services and skills. - Created necessary scripts for starting and stopping skills, including pose conversion and navigation. - Enhanced RViz configuration for better visualization of the Tiago robot's capabilities. - Implemented build scripts for both `tiago_demo_package` and `navigation_skills_provider` to streamline deployment.
…viders - Refactored service names in `demo_recipe.yaml` and `rbnx_manifest.yaml` to include `srv::` prefix for consistency. - Updated skill names in `navigation_skills_provider` to use `skl::` prefix, enhancing clarity in skill identification. - Introduced `kill.sh` script for terminating processes related to the ROS2 environment. - Enhanced `test_cli.sh` with additional task creation examples for better usability. - Modified `move_to_object_skill.py` and `wandering_skill.py` to implement new service querying mechanisms and improved logging. - Adjusted `package.xml` to remove unnecessary dependencies, streamlining the build process. - Updated RViz configuration for improved visualization of the robot's capabilities.
- Added direct executable search for `move_to_object_skill` and `wandering_skill` in their respective scripts, enhancing execution reliability. - Updated fallback mechanisms to prioritize executable paths before resorting to ROS2 commands and Python scripts. - Removed the unused `std_msgs` module and its references from the project, streamlining the codebase. - Enhanced logging for skill execution to provide clearer feedback during runtime.
…port - Introduced a new function to set thread real-time priority using SCHED_FIFO for improved responsiveness. - Refactored core API handlers to run on dedicated high-priority threads, ensuring better performance during service requests. - Added `libc` dependency to facilitate real-time scheduling on Linux. - Updated logging to provide feedback on thread priority settings and potential issues.
- Added a new `StdString` struct to represent string messages in ROS2, implementing the `Message` trait for compatibility. - Updated `RtdlExecutor` to utilize `StdString` for publishing and subscribing to messages, enhancing type safety and clarity in message handling. - Modified message handling logic to access the string data directly from the new struct.
tools